home *** CD-ROM | disk | FTP | other *** search
- #if !defined(USEDUMP)
- #include "lprlib.h"
- #include "lprdef.h"
- #include "lprfuncs.h"
- #else
- #pragma load "lprDumpFile"
- #endif
-
- extern settings_list cs, ds;
- extern unsigned char tcpinitok;
- extern unsigned long passtime;
- extern unsigned char vmpass[];
- extern unsigned char grayflag;
- extern unsigned char bigscreen;
- extern unsigned long * Ticks;
- extern DialogPtr statptr;
- extern unsigned char netstat[], connstat[], prtstat[];
-
- unsigned char passtext[32];
- unsigned char hidden;
-
- unsigned char destflag;
- unsigned char headflag;
- unsigned char fmtstate;
-
- void aboutdlg()
- {
- DialogPtr dlgptr;
- Ptr dStorage;
- WindowPtr behind;
- short itemHit;
- Handle version;
- short gtype;
- Handle gitem;
- Rect gbox;
- pascal Boolean (*filterProc) ();
- static unsigned short * DlgFont = 0xAFA;
- unsigned char msg[120];
- long l;
-
- dStorage = 0;
- behind = (WindowPtr)-1;
- *DlgFont = 1;
- dlgptr = GetNewDialog(256, dStorage, behind);
- ctrwindow(dlgptr);
-
- /* define version string */
- version = GetResource('lpra', 0);
- GetDItem(dlgptr, 4, >ype, &gitem, &gbox);
- SetIText(gitem, *version);
-
- /* define available storage */
- MaxApplZone();
- l = FreeMem() >> 10;
- sprintf(msg, "Available storage = %ldK", l);
- GetDItem(dlgptr, 6, >ype, &gitem, &gbox);
- c2pstr(msg);
- SetIText(gitem, msg);
- p2cstr(msg);
-
- /* show dialog */
- ShowWindow(dlgptr);
-
- /* frame the default selection */
- framedflt(dlgptr);
-
- filterProc = DlgFilter;
- ModalDialog((ModalFilterProcPtr)filterProc, &itemHit);
- DisposDialog(dlgptr);
- *DlgFont = 0;
- }
-
- void statdlg(code, mask)
- unsigned char code, mask;
- {
- static DialogRecord dlgrec;
- Ptr dStorage;
- WindowPtr behind;
- GrafPtr temp;
- struct WStateData * wsptr;
- struct WindowRecord * stemp;
-
- switch (code) {
- case 0:
- if (statptr == 0) return;
- case 1:
- if (statptr == 0) {
- dStorage = (Ptr)&dlgrec;
- behind = (WindowPtr)-1;
- statptr = GetNewDialog(275, dStorage, behind);
- ctrwindow(statptr);
- ShowWindow(statptr);
- stemp = (struct WindowRecord *)statptr;
- if (stemp->dataHandle != 0) {
- wsptr = (struct WStateData *)*(stemp->dataHandle);
- wsptr->stdState = statptr->portRect;
- GetPort(&temp);
- SetPort(statptr);
- LocalToGlobal((Point *)(&(wsptr->stdState.top)));
- LocalToGlobal((Point *)(&(wsptr->stdState.bottom)));
- SetPort(temp);
- }
- }
- if (mask & 0x01) settext(statptr, 2, netstat);
- if (mask & 0x02) settext(statptr, 4, connstat);
- if (mask & 0x04) settext(statptr, 6, prtstat);
- statGrowIcon();
- return;
- default:
- if (statptr == 0) return;
- DisposDialog(statptr);
- statptr = 0;
- return;
- }
- }
-
- void settext(dlgptr, item, text)
- register DialogPtr dlgptr;
- register short item;
- register unsigned char *text;
- {
- short gtype;
- Handle gitem;
- Rect gbox;
-
- GetDItem(dlgptr, item, >ype, &gitem, &gbox);
- c2pstr(text);
- SetIText(gitem, text);
- p2cstr(text);
- }
-
- short savedlg(void)
- {
- DialogPtr dlgptr;
- Ptr dStorage;
- WindowPtr behind;
- short itemHit;
- pascal Boolean (*filterProc) ();
-
- dStorage = 0;
- behind = (WindowPtr)-1;
- dlgptr = GetNewDialog(264, dStorage, behind);
- ctrwindow(dlgptr);
- ShowWindow(dlgptr);
-
- /* frame the default selection */
- framedflt(dlgptr);
-
- /* loop to process changes */
-
- filterProc = DlgFilter;
- while (1) {
- ModalDialog((ModalFilterProcPtr)filterProc, &itemHit);
- if (itemHit == 1) break;
- if (itemHit == 2) break;
- }
- /* dispose of dialog and return */
- DisposDialog(dlgptr);
- return(2 - itemHit);
- }
-
- void orgdlg(void)
- {
- DialogPtr dlgptr;
- Ptr dStorage;
- WindowPtr behind;
- short itemHit;
- pascal Boolean (*filterProc) ();
- unsigned char d_orghost[64];
- unsigned char d_orguser[64];
-
- filterProc = DlgFilter;
- dStorage = 0;
- behind = (WindowPtr)-1;
-
- dlgptr = GetNewDialog(265, dStorage, behind);
- ctrwindow(dlgptr);
-
- /* show current values of items */
- setorg(dlgptr, cs.orghost, cs.orguser);
-
- /* show the dialog */
- ShowWindow(dlgptr);
-
- repeat: /* come here if string error */
-
- /* frame the default selection */
- framedflt(dlgptr);
-
- /* loop to process changes */
- while (1) {
- ModalDialog((ModalFilterProcPtr)filterProc, &itemHit);
- if (itemHit == 2) {
- setorg(dlgptr, ds.orghost, ds.orguser);
- }
- else if (itemHit < 4) break;
- }
-
- if (itemHit == 3) { /* cancel */
- DisposDialog(dlgptr);
- return;
- }
- /* OK */
- if (getstring(dlgptr, 6, "Host name", d_orghost, 64)) goto repeat;
- if (getstring(dlgptr, 8, "User name", d_orguser, 64)) goto repeat;
- DisposDialog(dlgptr);
- memcpy(cs.orghost, d_orghost, 64);
- memcpy(cs.orguser, d_orguser, 64);
- }
-
- void setorg(dlgptr, host, user)
- DialogPtr dlgptr;
- unsigned char * host, * user;
- {
- short gtype;
- Handle gitem;
- Rect gbox;
-
- if (host != 0) {
- GetDItem(dlgptr, 6, >ype, &gitem, &gbox); /* host name */
- c2pstr(host);
- SetIText(gitem, host);
- p2cstr(host);
- }
-
- if (user != 0) {
- GetDItem(dlgptr, 8, >ype, &gitem, &gbox); /* user name */
- c2pstr(user);
- SetIText(gitem, user);
- p2cstr(user);
- }
- }
-
- void destdlg(needpass)
- unsigned char needpass;
- {
- DialogPtr dlgptr;
- Ptr dStorage;
- WindowPtr behind;
- short itemHit;
- unsigned char d_hostname[128];
- unsigned char d_printer[64];
- unsigned char d_vmflag;
- unsigned char d_vmuser[9];
- unsigned char d_vmpass[9];
- unsigned char d_newprot;
- short gtype;
- Handle gitem;
- Rect gbox;
- pascal Boolean (*filterProc) ();
- unsigned char resultstr[256];
- GrafPtr gp;
- unsigned char passclick;
- EventRecord clickevent;
-
- filterProc = pDlgFilter;
- dStorage = 0;
- behind = (WindowPtr)-1;
-
- dlgptr = GetNewDialog(266, dStorage, behind);
- ctrwindow(dlgptr);
-
- /* define routine to draw user item */
- GetDItem(dlgptr, 10, >ype, &gitem, &gbox);
- gitem = (Handle)destuser;
- SetDItem(dlgptr, 10, gtype, gitem, &gbox);
- GetDItem(dlgptr, 12, >ype, &gitem, &gbox);
- gitem = (Handle)destuser;
- SetDItem(dlgptr, 12, gtype, gitem, &gbox);
-
- /* show current values of items */
- hidden = (vmpass[0] != 0);
- if (hidden)
- setdest(dlgptr, cs.hostname, cs.printer, cs.vmflag, cs.vmuser,
- "(hidden)", cs.newprot);
- else
- setdest(dlgptr, cs.hostname, cs.printer, cs.vmflag, cs.vmuser,
- "", cs.newprot);
- memset(passtext, 0, 32);
- strcpy(passtext, vmpass);
- d_vmflag = cs.vmflag;
- d_newprot = cs.newprot;
- passclick = 0;
-
- /* if needpass set, generate event record to use, and */
- /* change top text line */
- if (needpass) {
- clickevent.what = mouseDown;
- clickevent.message = 0;
- clickevent.when = *Ticks;
- clickevent.modifiers = 0;
- if (cs.vmuser[0]) /* select either password or userid */
- GetDItem(dlgptr, 13, >ype, &gitem, &gbox);
- else
- GetDItem(dlgptr, 11, >ype, &gitem, &gbox);
- clickevent.where.v = (gbox.top + gbox.bottom)/2;
- clickevent.where.h = (gbox.left + gbox.right)/2;
- GetPort(&gp);
- SetPort(dlgptr);
- LocalToGlobal(&clickevent.where);
- SetPort(gp);
- GetDItem(dlgptr, 4, >ype, &gitem, &gbox);
- if (cs.vmuser[0]) { /* need only password */
- gbox.left -= 78;
- gbox.right += 78;
- SetDItem(dlgptr, 4, gtype, gitem, &gbox);
- SetIText(gitem, "\pPlease enter the password for your userid:");
- }
- else { /* need both userid and password */
- gbox.left -= 59;
- gbox.right += 59;
- SetDItem(dlgptr, 4, gtype, gitem, &gbox);
- SetIText(gitem, "\pPlease enter your userid and password:");
- }
- }
-
- /* show the dialog */
- ShowWindow(dlgptr);
- if (needpass) DialogSelect(&clickevent, &dlgptr, &itemHit);
-
- repeat: /* come here if string error */
-
- /* frame the default selection */
- framedflt(dlgptr);
-
- /* loop to process changes */
- while (1) {
- ModalDialog((ModalFilterProcPtr)filterProc, &itemHit);
- switch (itemHit) {
- case 2: /* set default */
- setdest(dlgptr, ds.hostname, ds.printer, ds.vmflag,
- ds.vmuser, "", d_newprot);
- memset(passtext, 0, 32);
- hidden = 0;
- d_vmflag = ds.vmflag;
- d_newprot = ds.newprot;
- break;
- case 9: /* vm printer flag */
- d_vmflag ^= 1;
- if (d_vmflag == 0) {
- setdest(dlgptr, 0L, 0L, d_vmflag, "", "", d_newprot);
- memset(passtext, 0, 32);
- }
- else {
- hidden = (vmpass[0] != 0);
- if (hidden)
- setdest(dlgptr, 0L, 0L, d_vmflag, cs.vmuser,
- "(hidden)", d_newprot);
- else
- setdest(dlgptr, 0L, 0L, d_vmflag, cs.vmuser, "",
- d_newprot);
- memset(passtext, 0, 32);
- strcpy(passtext, vmpass);
- }
- break;
- case 11: /* userid */
- if (d_vmflag == 0) {
- GetDItem(dlgptr, itemHit, >ype, &gitem, &gbox);
- GetIText(gitem, resultstr);
- p2cstr(resultstr);
- if (resultstr[0] != 0) {
- d_vmflag = 1;
- hidden = (vmpass[0] != 0);
- if (hidden)
- setdest(dlgptr, 0L, 0L, d_vmflag, 0L,
- "(hidden)", d_newprot);
- else
- setdest(dlgptr, 0L, 0L, d_vmflag, 0L, "",
- d_newprot);
- memset(passtext, 0, 32);
- strcpy(passtext, vmpass);
- }
- }
- break;
- case 13: /* password */
- if (d_vmflag == 0) {
- GetDItem(dlgptr, itemHit, >ype, &gitem, &gbox);
- GetIText(gitem, resultstr);
- p2cstr(resultstr);
- if (resultstr[0] != 0) {
- d_vmflag = 1;
- hidden = 0;
- setdest(dlgptr, 0L, 0L, d_vmflag, cs.vmuser, 0L,
- d_newprot);
- }
- }
- passclick = 1;
- break;
- case 14: /* new protocol flag */
- d_newprot ^= 1;
- setdest(dlgptr, 0L, 0L, d_vmflag, 0L, 0L, d_newprot);
- break;
- default:
- break;
- }
- if ((itemHit == 1) || (itemHit == 3)) break;
- }
-
- if (itemHit == 3) { /* cancel */
- DisposDialog(dlgptr);
- return;
- }
- /* OK */
- if (getstring(dlgptr, 6, "Host name", d_hostname, 128)) goto repeat;
- if (getstring(dlgptr, 8, "Printer name", d_printer, 64)) goto repeat;
- if (getstring(dlgptr, 11, "Userid", d_vmuser, 9)) goto repeat;
- if (checkstring(passtext, dlgptr, 13, "Password", d_vmpass, 9)) goto repeat;
- if ((d_vmuser[0] == 0) && (d_vmpass[0] == 0)) {
- if (d_vmflag) {
- stoperr(vmp1alrt);
- goto repeat;
- }
- }
- else {
- if (d_vmuser[0] == 0) {
- stoperr(vmp1alrt);
- SelIText(dlgptr, 11, 0, 32767);
- goto repeat;
- }
- else if (d_vmpass[0] == 0) {
- stoperr(vmp1alrt);
- SelIText(dlgptr, 13, 0, 32767);
- goto repeat;
- }
- else if (!d_vmflag) {
- stoperr(vmp2alrt);
- goto repeat;
- }
- }
- DisposDialog(dlgptr);
- memcpy(cs.hostname, d_hostname, 128);
- memcpy(cs.printer, d_printer, 64);
- memcpy(cs.vmuser, d_vmuser, 9);
- memcpy(vmpass, d_vmpass, 9);
- cs.vmflag = d_vmflag;
- cs.newprot = d_newprot;
- if (cs.vmflag && passclick) passtime = *Ticks;
- else if (!cs.vmflag) passtime = 0;
- }
-
- void setdest(dlgptr, hostname, printer, vmflag, vmuser, vmpass, newprot)
- DialogPtr dlgptr;
- unsigned char * hostname, * printer, * vmuser, * vmpass;
- unsigned char vmflag, newprot;
- {
- short gtype;
- Handle gitem;
- Rect gbox;
-
- if (hostname != 0) {
- GetDItem(dlgptr, 6, >ype, &gitem, &gbox); /* host name */
- c2pstr(hostname);
- SetIText(gitem, hostname);
- p2cstr(hostname);
- }
-
- if (printer != 0) {
- GetDItem(dlgptr, 8, >ype, &gitem, &gbox); /* printer name */
- c2pstr(printer);
- SetIText(gitem, printer);
- p2cstr(printer);
- }
-
- GetDItem(dlgptr, 9, >ype, &gitem, &gbox); /* vm printer flag */
- SetCtlValue((ControlHandle)gitem, vmflag);
- destflag = vmflag;
- GetDItem(dlgptr, 14, >ype, &gitem, &gbox); /* new protocol flag */
- SetCtlValue((ControlHandle)gitem, newprot);
- destuser(dlgptr, 10); /* userid label */
- destuser(dlgptr, 12); /* password label */
-
- if (vmuser != 0) {
- GetDItem(dlgptr, 11, >ype, &gitem, &gbox); /* userid */
- c2pstr(vmuser);
- SetIText(gitem, vmuser);
- p2cstr(vmuser);
- }
-
- if (vmpass != 0) {
- GetDItem(dlgptr, 13, >ype, &gitem, &gbox); /* password */
- c2pstr(vmpass);
- SetIText(gitem, vmpass);
- p2cstr(vmpass);
- }
- }
-
- void headdlg()
- {
- DialogPtr dlgptr;
- Ptr dStorage;
- WindowPtr behind;
- short gtype;
- Handle gitem;
- Rect gbox;
- short itemHit;
- pascal Boolean (*filterProc) ();
- short i;
- unsigned char resultstr[256];
- unsigned char d_hdrflag;
- unsigned char d_hdrid[64];
- unsigned char d_jobname[64];
- unsigned char d_hdrclass[64];
- unsigned char *tid, *tname, *tclass;
-
- filterProc = DlgFilter;
- dStorage = 0;
- behind = (WindowPtr)-1;
-
- dlgptr = GetNewDialog(267, dStorage, behind);
- ctrwindow(dlgptr);
-
- /* define routine to draw user item */
- for (i = 6; i <= 10; i += 2) {
- GetDItem(dlgptr, i, >ype, &gitem, &gbox);
- gitem = (Handle)headuser;
- SetDItem(dlgptr, i, gtype, gitem, &gbox);
- }
-
- /* show current values of items */
- sethead(dlgptr, cs.hdrflag, cs.hdrid, cs.jobname, cs.hdrclass);
- d_hdrflag = cs.hdrflag;
-
- /* show the dialog */
- ShowWindow(dlgptr);
-
- repeat: /* come here if string error */
-
- /* frame the default selection */
- framedflt(dlgptr);
-
- /* loop to process changes */
- while (1) {
- ModalDialog((ModalFilterProcPtr)filterProc, &itemHit);
- switch(itemHit) {
- case 2: /* set defaults */
- sethead(dlgptr, ds.hdrflag, ds.hdrid, ds.jobname, ds.hdrclass);
- d_hdrflag = ds.hdrflag;
- break;
- case 5: /* generate header flag */
- d_hdrflag ^= 1;
- if (d_hdrflag == 0) sethead(dlgptr, d_hdrflag, "", "", "");
- else sethead(dlgptr, d_hdrflag, cs.hdrid, cs.jobname, cs.hdrclass);
- break;
- case 7: /* identification */
- case 9: /* job name */
- case 11: /* classification */
- if (d_hdrflag == 0) {
- GetDItem(dlgptr, itemHit, >ype, &gitem, &gbox);
- GetIText(gitem, resultstr);
- p2cstr(resultstr);
- if (resultstr[0] != 0) {
- d_hdrflag = 1;
- tid = cs.hdrid;
- tname = cs.jobname;
- tclass = cs.hdrclass;
- switch (itemHit) {
- case 7:
- tid = 0;
- break;
- case 9:
- tname = 0;
- break;
- case 11:
- tclass = 0;
- break;
- default:
- break;
- }
- sethead(dlgptr, d_hdrflag, tid, tname, tclass);
- }
- }
- break;
- default:
- break;
- }
- if ((itemHit == 1) || (itemHit == 3)) break;
- }
-
- if (itemHit == 3) { /* cancel */
- DisposDialog(dlgptr);
- return;
- }
- /* OK */
- if (getstring(dlgptr, 7, "Identification", d_hdrid, 64)) goto repeat;
- if (getstring(dlgptr, 9, "Job name", d_jobname, 64)) goto repeat;
- if (getstring(dlgptr, 11, "Classification", d_hdrclass, 64)) goto repeat;
- DisposDialog(dlgptr);
- cs.hdrflag = d_hdrflag;
- memcpy(cs.hdrid, d_hdrid, 64);
- memcpy(cs.jobname, d_jobname, 64);
- memcpy(cs.hdrclass, d_hdrclass, 64);
- }
-
- void sethead(dlgptr, hdrflag, hdrid, jobname, hdrclass)
- DialogPtr dlgptr;
- unsigned char hdrflag;
- unsigned char * hdrid, * jobname, * hdrclass;
- {
- short gtype;
- Handle gitem;
- Rect gbox;
-
- GetDItem(dlgptr, 5, >ype, &gitem, &gbox); /* generate header flag */
- SetCtlValue((ControlHandle)gitem, hdrflag);
- headflag = hdrflag;
- headuser(dlgptr, 6); /* identification */
- headuser(dlgptr, 8); /* job name */
- headuser(dlgptr, 10); /* classification */
-
- if (hdrid != 0) {
- GetDItem(dlgptr, 7, >ype, &gitem, &gbox); /* identification */
- c2pstr(hdrid);
- SetIText(gitem, hdrid);
- p2cstr(hdrid);
- }
-
- if (jobname!= 0) {
- GetDItem(dlgptr, 9, >ype, &gitem, &gbox); /* job name */
- c2pstr(jobname);
- SetIText(gitem, jobname);
- p2cstr(jobname);
- }
-
- if (hdrclass != 0) {
- GetDItem(dlgptr, 11, >ype, &gitem, &gbox); /* classification */
- c2pstr(hdrclass);
- SetIText(gitem, hdrclass);
- p2cstr(hdrclass);
- }
- }
-
- void fmtdlg()
- {
- DialogPtr dlgptr;
- Ptr dStorage;
- WindowPtr behind;
- short gtype;
- Handle gitem;
- Rect gbox;
- short itemHit;
- pascal Boolean (*filterProc) ();
- short i;
- unsigned char d_fmttype;
- unsigned char d_fmttitle[64];
- unsigned char d_findent;
- unsigned char d_ftop;
- unsigned char d_fwidth;
- unsigned char d_fpgsize;
- unsigned char d_splitflag;
- unsigned char d_pascalflag;
- unsigned char d_ftabsize;
- unsigned char d_duplex;
- unsigned char d_noff;
- unsigned char needmac;
- unsigned char * ttitle;
- short tindent, ttop, twidth, tpgsize, ttabsize;
- unsigned char resultstr[256];
-
- filterProc = DlgFilter;
- dStorage = 0;
- behind = (WindowPtr)-1;
-
- dlgptr = GetNewDialog(268, dStorage, behind);
- ctrwindow(dlgptr);
-
- /* define routine to draw user item */
- for (i = 8; i <= 16; i += 2) {
- GetDItem(dlgptr, i, >ype, &gitem, &gbox);
- gitem = (Handle)fmtuser;
- SetDItem(dlgptr, i, gtype, gitem, &gbox);
- }
- GetDItem(dlgptr, 20, >ype, &gitem, &gbox);
- gitem = (Handle)fmtuser;
- SetDItem(dlgptr, 20, gtype, gitem, &gbox);
-
- /* show current values of items */
- setfmt(dlgptr, cs.fmttype, cs.fmttitle, cs.findent, cs.ftop,
- cs.fwidth, cs.fpgsize, cs.splitflag, cs.pascalflag, cs.ftabsize,
- cs.duplex, cs.noff);
- d_fmttype = cs.fmttype;
- d_splitflag = cs.splitflag;
- d_pascalflag = cs.pascalflag;
- d_duplex = cs.duplex;
- d_noff = cs.noff;
-
- /* show the dialog */
- ShowWindow(dlgptr);
-
- repeat: /* come here if string error */
-
- /* frame the default selection */
- framedflt(dlgptr);
-
- /* loop to process changes */
- while (1) {
- ModalDialog((ModalFilterProcPtr)filterProc, &itemHit);
- switch(itemHit) {
- case 2: /* set defaults */
- setfmt(dlgptr, ds.fmttype, ds.fmttitle, ds.findent, ds.ftop,
- ds.fwidth, ds.fpgsize, ds.splitflag, ds.pascalflag,
- ds.ftabsize, ds.duplex, ds.noff);
- d_fmttype = ds.fmttype;
- d_splitflag = ds.splitflag;
- d_pascalflag = ds.pascalflag;
- d_duplex = ds.duplex;
- d_noff = ds.noff;
- break;
- case 5: /* none */
- if (d_fmttype == 1) break;
- setfmt(dlgptr, 1, "", 0, 0, 0, 0, 0, 0, 0, 0, cs.noff);
- d_fmttype = 1;
- d_splitflag = 0;
- d_pascalflag = 0;
- d_duplex = 0;
- d_noff = cs.noff;
- break;
- case 6: /* on Mac */
- if (d_fmttype == 2) break;
- setfmt(dlgptr, 2, cs.fmttitle, cs.findent, cs.ftop, cs.fwidth,
- cs.fpgsize, cs.splitflag, cs.pascalflag, cs.ftabsize,
- cs.duplex, 0);
- d_fmttype = 2;
- d_splitflag = cs.splitflag;
- d_pascalflag = cs.pascalflag;
- d_duplex = cs.duplex;
- d_noff = 0;
- break;
- case 7: /* remote */
- if (d_fmttype == 3) break;
- setfmt(dlgptr, 3, cs.fmttitle, cs.findent, 0, cs.fwidth, 0,
- 0, 0, 0, 0, cs.noff);
- d_fmttype = 3;
- d_splitflag = 0;
- d_pascalflag = 0;
- d_duplex = 0;
- d_noff = cs.noff;
- break;
- case 9: /* title */
- case 11: /* indent */
- case 13: /* top margin */
- case 15: /* width */
- case 17: /* page length */
- case 21: /* tab spacing */
- needmac = ((itemHit == 13) || (itemHit == 17) || (itemHit == 21));
- if ((d_fmttype == 1) || ((d_fmttype == 3) && needmac)) {
- GetDItem(dlgptr, itemHit, >ype, &gitem, &gbox);
- GetIText(gitem, resultstr);
- p2cstr(resultstr);
- if (resultstr[0] != 0) {
- ttitle = cs.fmttitle;
- tindent = cs.findent;
- ttop = cs.ftop;
- twidth = cs.fwidth;
- tpgsize = cs.fpgsize;
- ttabsize = cs.ftabsize;
- switch (itemHit) {
- case 9:
- ttitle = 0;
- break;
- case 11:
- tindent = -1;
- break;
- case 13:
- ttop = -1;
- break;
- case 15:
- twidth = -1;
- break;
- case 17:
- tpgsize = -1;
- break;
- case 21:
- ttabsize = -1;
- break;
- default:
- break;
- }
- setfmt(dlgptr, 2, ttitle, tindent, ttop, twidth,
- tpgsize, cs.splitflag, cs.pascalflag,
- ttabsize, cs.duplex, cs.noff);
- d_fmttype = 2;
- d_splitflag = cs.splitflag;
- d_pascalflag = cs.pascalflag;
- d_duplex = cs.duplex;
- d_noff = cs.noff;
- }
- }
- break;
- case 18:
- d_splitflag ^= 1;
- setfmt(dlgptr, d_fmttype, 0L, -1, -1, -1, -1,
- d_splitflag, d_pascalflag, -1, d_duplex, d_noff);
- break;
- case 19:
- d_pascalflag ^= 1;
- setfmt(dlgptr, d_fmttype, 0L, -1, -1, -1, -1,
- d_splitflag, d_pascalflag, -1, d_duplex, d_noff);
- break;
- case 22:
- d_duplex ^= 1;
- setfmt(dlgptr, d_fmttype, 0L, -1, -1, -1, -1,
- d_splitflag, d_pascalflag, -1, d_duplex, d_noff);
- break;
- case 23:
- d_noff ^= 1;
- setfmt(dlgptr, d_fmttype, 0L, -1, -1, -1, -1,
- d_splitflag, d_pascalflag, -1, d_duplex, d_noff);
- break;
- default:
- break;
- }
- if ((itemHit == 1) || (itemHit == 3)) break;
- }
-
- if (itemHit == 3) { /* cancel */
- DisposDialog(dlgptr);
- return;
- }
- /* OK */
- if (getstring(dlgptr, 9, "Title", d_fmttitle, 64)) goto repeat;
- if (getcnum(dlgptr, 11, "Indent", &d_findent, 0, 63)) goto repeat;
- if (getcnum(dlgptr, 13, "Top margin", &d_ftop, 0, 13-MARGIN)) goto repeat;
- if (getcnum(dlgptr, 15, "Width", &d_fwidth, 64, 128)) goto repeat;
- if (getcnum(dlgptr, 17, "Page length", &d_fpgsize, 16, 255)) goto repeat;
- if (getcnum(dlgptr, 21, "Tab spacing", &d_ftabsize, 1, 32)) goto repeat;
- DisposDialog(dlgptr);
- cs.fmttype = d_fmttype;
- memcpy(cs.fmttitle, d_fmttitle, 64);
- cs.findent = d_findent;
- cs.ftop = d_ftop;
- cs.fwidth = d_fwidth;
- cs.fpgsize = d_fpgsize;
- cs.splitflag = d_splitflag;
- cs.pascalflag = d_pascalflag;
- cs.duplex = d_duplex;
- cs.noff = d_noff;
- cs.ftabsize = d_ftabsize;
- }
-
- void setfmt(dlgptr, fmttype, title, indent, top, width, pgsize,
- splitflg, pascalflg, tabsize, duplex, noff)
- DialogPtr dlgptr;
- unsigned char fmttype, splitflg, pascalflg, duplex;
- short indent, top, width, pgsize, tabsize;
- unsigned char * title;
- {
- short gtype;
- Handle gitem;
- Rect gbox;
- unsigned char numfmt[8];
-
- GetDItem(dlgptr, 5, >ype, &gitem, &gbox); /* formatting type */
- SetCtlValue((ControlHandle)gitem, fmttype == 1);
- GetDItem(dlgptr, 6, >ype, &gitem, &gbox);
- SetCtlValue((ControlHandle)gitem, fmttype == 2);
- GetDItem(dlgptr, 7, >ype, &gitem, &gbox);
- SetCtlValue((ControlHandle)gitem, fmttype == 3);
-
- fmtstate = fmttype; /* for user items */
-
- fmtuser(dlgptr, 8);
- if (title != 0) {
- GetDItem(dlgptr, 9, >ype, &gitem, &gbox); /* title */
- c2pstr(title);
- SetIText(gitem, title);
- p2cstr(title);
- }
-
- fmtuser(dlgptr, 10);
- if (indent >= 0) {
- GetDItem(dlgptr, 11, >ype, &gitem, &gbox); /* indent */
- if ((fmttype != 1) || (indent > 0)) {
- sprintf(numfmt, "%d", indent);
- c2pstr(numfmt);
- SetIText(gitem, numfmt);
- p2cstr(numfmt);
- }
- else SetIText(gitem, "\p");
- }
-
- fmtuser(dlgptr, 12);
- if (top >= 0) {
- GetDItem(dlgptr, 13, >ype, &gitem, &gbox); /* top */
- if ((fmttype == 2) || (top > 0)) {
- sprintf(numfmt, "%d", top);
- c2pstr(numfmt);
- SetIText(gitem, numfmt);
- p2cstr(numfmt);
- }
- else SetIText(gitem, "\p");
- }
-
- fmtuser(dlgptr, 14);
- if (width >= 0) {
- GetDItem(dlgptr, 15, >ype, &gitem, &gbox); /* width */
- if ((fmttype != 1) || (width > 0)) {
- if (width == 0) width = ds.fwidth;
- sprintf(numfmt, "%d", width);
- c2pstr(numfmt);
- SetIText(gitem, numfmt);
- p2cstr(numfmt);
- }
- else SetIText(gitem, "\p");
- }
-
- fmtuser(dlgptr, 16);
- if (pgsize >= 0) {
- GetDItem(dlgptr, 17, >ype, &gitem, &gbox); /* pgsize */
- if ((fmttype == 2) || (pgsize > 0)) {
- if (pgsize == 0) pgsize = ds.fpgsize;
- sprintf(numfmt, "%d", pgsize);
- c2pstr(numfmt);
- SetIText(gitem, numfmt);
- p2cstr(numfmt);
- }
- else SetIText(gitem, "\p");
- }
-
- GetDItem(dlgptr, 18, >ype, &gitem, &gbox); /* split line flag */
- if ((fmttype == 2) || splitflg) {
- SetCtlValue((ControlHandle)gitem, splitflg);
- HiliteControl((ControlHandle)gitem, 0);
- }
- else {
- SetCtlValue((ControlHandle)gitem, 0);
- HiliteControl((ControlHandle)gitem, 255);
- }
-
- GetDItem(dlgptr, 19, >ype, &gitem, &gbox); /* pascal flag */
- if ((fmttype == 2) || pascalflg) {
- SetCtlValue((ControlHandle)gitem, pascalflg);
- HiliteControl((ControlHandle)gitem, 0);
- }
- else {
- SetCtlValue((ControlHandle)gitem, 0);
- HiliteControl((ControlHandle)gitem, 255);
- }
-
- fmtuser(dlgptr, 20);
- if (tabsize >= 0) {
- GetDItem(dlgptr, 21, >ype, &gitem, &gbox); /* tabsize */
- if ((fmttype == 2) || (tabsize > 0)) {
- if (tabsize == 0) tabsize = ds.ftabsize;
- sprintf(numfmt, "%d", tabsize);
- c2pstr(numfmt);
- SetIText(gitem, numfmt);
- p2cstr(numfmt);
- }
- else SetIText(gitem, "\p");
- }
-
- GetDItem(dlgptr, 22, >ype, &gitem, &gbox); /* duplex flag */
- if ((fmttype == 2) || duplex) {
- SetCtlValue((ControlHandle)gitem, duplex);
- HiliteControl((ControlHandle)gitem, 0);
- }
- else {
- SetCtlValue((ControlHandle)gitem, 0);
- HiliteControl((ControlHandle)gitem, 255);
- }
-
- GetDItem(dlgptr, 23, >ype, &gitem, &gbox); /* noff flag */
- if ((fmttype != 2) || noff) {
- SetCtlValue((ControlHandle)gitem, noff);
- HiliteControl((ControlHandle)gitem, 0);
- }
- else {
- SetCtlValue((ControlHandle)gitem, 0);
- HiliteControl((ControlHandle)gitem, 255);
- }
- }
-
- void ctldlg()
- {
- DialogPtr dlgptr;
- Ptr dStorage;
- WindowPtr behind;
- short itemHit;
- pascal Boolean (*filterProc) ();
- short dlgnum;
- unsigned char d_copycnt;
- unsigned char d_vmclass[2];
- unsigned char d_vmform[9];
-
- filterProc = DlgFilter;
- dStorage = 0;
- behind = (WindowPtr)-1;
- if (cs.vmflag) dlgnum = 269;
- else dlgnum = 274;
-
- dlgptr = GetNewDialog(dlgnum, dStorage, behind);
- ctrwindow(dlgptr);
-
- /* show current values of items */
- setctl(dlgptr, cs.copycnt, cs.vmclass, cs.vmform);
-
- /* show the dialog */
- ShowWindow(dlgptr);
-
- repeat: /* come here if string error */
-
- /* frame the default selection */
- framedflt(dlgptr);
-
- /* loop to process changes */
- while (1) {
- ModalDialog((ModalFilterProcPtr)filterProc, &itemHit);
- switch(itemHit) {
- case 2:
- setctl(dlgptr, ds.copycnt, ds.vmclass, ds.vmform);
- break;
- case 12:
- infodlg(270);
- framedflt(dlgptr);
- break;
- case 13:
- infodlg(271);
- framedflt(dlgptr);
- break;
- default:
- break;
- }
- if ((itemHit == 1) || (itemHit == 3)) break;
- }
-
- if (itemHit == 3) { /* cancel */
- DisposDialog(dlgptr);
- return;
- }
- /* OK */
- if (getcnum(dlgptr, 6, "Copies", &d_copycnt, 1, 4)) goto repeat;
- if (cs.vmflag) {
- if (getstring(dlgptr, 9, "Class", d_vmclass, 2)) goto repeat;
- if (getstring(dlgptr, 11, "Form", d_vmform, 9)) goto repeat;
- }
- DisposDialog(dlgptr);
- cs.copycnt = d_copycnt;
- if (cs.vmflag) {
- memcpy(cs.vmclass, d_vmclass, 2);
- memcpy(cs.vmform, d_vmform, 9);
- }
- }
-
- void setctl(dlgptr, copycnt, vmclass, vmform)
- DialogPtr dlgptr;
- unsigned char copycnt;
- unsigned char * vmclass, * vmform;
- {
- short gtype;
- Handle gitem;
- Rect gbox;
- unsigned char numfmt[8];
-
- if (copycnt >= 0) {
- GetDItem(dlgptr, 6, >ype, &gitem, &gbox); /* copy count */
- if (copycnt == 0) copycnt = ds.copycnt;
- sprintf(numfmt, "%d", copycnt);
- c2pstr(numfmt);
- SetIText(gitem, numfmt);
- p2cstr(numfmt);
- }
-
- if (!cs.vmflag) return;
-
- if (vmclass != 0) {
- GetDItem(dlgptr, 9, >ype, &gitem, &gbox); /* VM class */
- c2pstr(vmclass);
- SetIText(gitem, vmclass);
- p2cstr(vmclass);
- }
-
- if (vmform != 0) {
- GetDItem(dlgptr, 11, >ype, &gitem, &gbox); /* VM form */
- c2pstr(vmform);
- SetIText(gitem, vmform);
- p2cstr(vmform);
- }
- }
-
- void infodlg(num)
- short num;
- {
- DialogPtr dlgptr;
- Ptr dStorage;
- WindowPtr behind;
- short itemHit;
- pascal Boolean (*filterProc) ();
-
- filterProc = DlgFilter;
- dStorage = 0;
- behind = (WindowPtr)-1;
- dlgptr = GetNewDialog(num, dStorage, behind);
- ctrwindow(dlgptr);
- ShowWindow(dlgptr);
-
- /* frame the default selection */
- framedflt(dlgptr);
-
- ModalDialog((ModalFilterProcPtr)filterProc, &itemHit);
- DisposDialog(dlgptr);
- }
-
- void stgalert(kind, routine, amount)
- unsigned char * kind;
- unsigned char * routine;
- long amount;
- {
- pascal Boolean (*filterProc) ();
- unsigned char message[80];
-
- filterProc = DlgFilter;
- resetcurs(); /* restore normal cursor */
- sprintf(message, "%s attempt to allocate %ld bytes for %s failed.",
- routine, amount, kind);
- dbdlg(message);
- StopAlert(263, (ModalFilterProcPtr)filterProc);
- }
-
- short quitdlg(void)
- /* if a file is still being printed, verify user wants to quit */
- {
- short item;
- pascal Boolean (*filterProc) ();
-
- filterProc = DlgFilter;
- item = CautionAlert(272, (ModalFilterProcPtr)filterProc);
- if (item == 1) return(0); /* Cancel */
- else return(1); /* Really Quit */
- }
-
- short vmuserdlg(void)
- {
- DialogPtr dlgptr;
- Ptr dStorage;
- WindowPtr behind;
- short itemHit;
- pascal Boolean (*filterProc) ();
-
- filterProc = DlgFilter;
- dStorage = 0;
- behind = (WindowPtr)-1;
- dlgptr = GetNewDialog(273, dStorage, behind);
- ctrwindow(dlgptr);
- ShowWindow(dlgptr);
-
- /* frame the default selection */
- framedflt(dlgptr);
-
- ModalDialog((ModalFilterProcPtr)filterProc, &itemHit);
- DisposDialog(dlgptr);
- return(itemHit-1);
- }
-
- void dbdlg(string)
- unsigned char *string;
- {
- DialogRecord dStorage;
- Rect boundry;
- unsigned char visible = 0, goAway = 0;
- WindowPtr behind = (-1);
- struct {
- short numitems;
- /* Button stuff */
- long Bhandle;
- short Btop,
- Bleft,
- Bbottom,
- Bright;
- unsigned char Btype;
- unsigned char Blen;
- unsigned char Btext[2];
- /* Text item */
- long Thandle;
- short Ttop,
- Tleft,
- Tbottom,
- Tright;
- unsigned char Ttype;
- unsigned char Tlen;
- unsigned char Ttext[255];
- } DStruct;
- DialogPtr theBox;
- short dummy, l;
- Size DSsize;
- Handle itemlist;
- pascal Boolean (*filterProc) ();
-
- filterProc = DlgFilter;
-
- if (cs.dblevel == 0) return;
-
- DStruct.numitems = 1;
- DStruct.Thandle = 0;
- DStruct.Ttop = 50;
- DStruct.Tleft = 30;
- DStruct.Tbottom = 100;
- DStruct.Tright = 260;
- DStruct.Ttype = statText + itemDisable;
- l = strlen(string);
- if (l > 254) l = 254;
- strcpy(DStruct.Ttext, string);
- if (l%2) {
- strcat(DStruct.Ttext, " ");
- l++;
- }
- DStruct.Tlen = l;
- DStruct.Bhandle = 0;
- DStruct.Btop = 10;
- DStruct.Bleft = 160;
- DStruct.Bbottom = 30;
- DStruct.Bright = 240;
- DStruct.Btype = ctrlItem + btnCtrl;
- DStruct.Blen = 2;
- DStruct.Btext[0] = 'O';
- DStruct.Btext[1] = 'K';
-
- boundry.top = 120;
- boundry.left = 120;
- boundry.bottom = 240;
- boundry.right = 400;
-
- DSsize = sizeof(DStruct) - 255 + l;
- itemlist = NewHandle(DSsize);
-
- memcpy(*itemlist, &DStruct, (short) DSsize);
-
-
- theBox = newdialog((Ptr)&dStorage, &boundry, "Debug Text",
- visible, dBoxProc, behind, goAway, 0L, itemlist);
- ctrwindow(theBox);
- ShowWindow(theBox);
-
- /* highlight the default item */
- framedflt(theBox);
-
- ModalDialog((ModalFilterProcPtr)filterProc, &dummy);
-
- DisposDialog(theBox);
- }
-
- void stoperr(code)
- short code;
- {
- pascal Boolean (*filterProc) ();
- Handle errtext;
- static unsigned char nullstr[1] = {0};
-
- errtext = GetResource('STR ', code);
- if (errtext == 0) return;
- ParamText(*errtext, nullstr, nullstr, nullstr);
-
- filterProc = DlgFilter;
- resetcurs(); /* restore normal cursor */
- StopAlert(258, (ModalFilterProcPtr)filterProc);
-
- ParamText(nullstr, nullstr, nullstr, nullstr);
- }
-
- pascal Boolean DlgFilter(dlg, eventptr, itemptr)
- DialogPtr dlg;
- EventRecord * eventptr;
- short * itemptr;
- {
- unsigned char i;
- DialogPtr temp;
-
- temp = dlg; /* avoid compiler warning */
-
- /* if (tcpinitok) Stask(); */
-
- switch(eventptr->what) {
- case mouseDown:
- return(false);
- case keyDown:
- i = (eventptr->message & 0x7f); /* ascii code */
- if ((i == 0x03) || (i == 0x0d)) {
- (*itemptr) = 1;
- return(true);
- }
- default:
- return(false);
- }
- }
-
- pascal Boolean pDlgFilter(dlg, eventptr, itemptr)
- DialogPeek dlg;
- EventRecord * eventptr;
- short * itemptr;
- {
- unsigned char i;
- Point mouseLoc;
- short gtype;
- Handle gitem;
- Rect gbox;
- GrafPtr gp;
-
- /* if (tcpinitok) Stask(); */
-
- switch(eventptr->what) {
- case mouseDown:
- if (hidden) {
- GetPort(&gp);
- SetPort((GrafPtr)dlg);
- mouseLoc = eventptr->where;
- GlobalToLocal(&mouseLoc);
- SetPort(gp);
- GetDItem((DialogPtr)dlg, 13, >ype, &gitem, &gbox);
- if (PtInRect(mouseLoc, &gbox)) {
- SetIText(gitem, "\p");
- memset(passtext, 0, 32);
- hidden = 0;
- }
- }
- return(false);
- break;
- case keyDown:
- case autoKey:
- i = (eventptr->message & 0x7f); /* ascii code */
- if ((i == 0x03) || (i == 0x0d)) {
- (*itemptr) = 1;
- return(true);
- }
- if ((i == 0x09) && (dlg->editField == 10) && hidden) {
- GetDItem((DialogPtr)dlg, 13, >ype, &gitem, &gbox);
- SetIText(gitem, "\p");
- memset(passtext, 0, 32);
- hidden = 0;
- return(false);
- }
- if ((dlg->editField == 12) && (i != 0x09)) {
- updpass((*(dlg->textH))->selStart, (*(dlg->textH))->selEnd, i);
- if ((i > 0x20) && (i <= 0x7e)) eventptr->message = 0xa5;
- return(false);
- }
- default:
- return(false);
- }
- }
-
- void updpass(start, end, c)
- short start, end;
- unsigned char c;
- {
- unsigned char origtext[32];
- unsigned char newstr[2];
-
- memcpy(origtext, passtext, 32); /* copy current text */
- memset(passtext, 0, 32); /* clear password */
- newstr[0] = c; /* define string for new character */
- newstr[1] = 0;
-
- /* if character is a backspace, and have insertion point,
- change to selection range of the previous character (if any) */
-
- if ((start == end) && (c == 0x08))
- if (start > 0) start--;
-
- /* ignore changes after the first 31 characters */
- if (start > 31) start = 31;
- if (end > 31) end = 31;
-
- /* copy text up to insertion point or selection range */
- appendpass(origtext, start);
-
- /* if character is not a backspace, append character */
- if (c != 0x08) appendpass(newstr, 1);
-
- /* append text following insertion point or selection range */
- appendpass(origtext+end, strlen(origtext)-end);
- }
-
- void appendpass(s, len)
- unsigned char * s;
- short len;
- {
- short slen, plen, rlen;
-
- /* check for arguments indicating nothing to do */
- if ((s[0] == 0) || (len < 1)) return;
-
- /* reduce length if longer than characters present */
- slen = strlen(s);
- if (slen < len) len = slen;
-
- /* reduce length if too many to fit */
- plen = strlen(passtext);
- rlen = 31 - plen;
- if (len > rlen) len = rlen;
-
- if (len == 0) return;
- memcpy(passtext+plen, s, len);
- }
-
- void setit(item, dlgptr, code)
- register short item, code;
- register DialogPtr dlgptr;
- {
- short gtype;
- Handle gitem;
- Rect gbox;
-
- GetDItem(dlgptr, item, >ype, &gitem, &gbox);
- SetCtlValue((ControlHandle)gitem, code);
- }
-
- void ctrwindow(wp)
- GrafPtr wp;
- {
- short scrhsize, scrvsize;
- short whsize, wvsize;
-
- scrhsize = qd.screenBits.bounds.right - qd.screenBits.bounds.left;
- scrvsize = qd.screenBits.bounds.bottom - qd.screenBits.bounds.top;
- whsize = wp->portRect.right-wp->portRect.left;
- wvsize = wp->portRect.bottom - wp->portRect.top;
- if (bigscreen)
- MoveWindow(wp, (scrhsize-whsize)/2, (scrvsize-wvsize)/3, 0);
- else
- MoveWindow(wp, (scrhsize-whsize)/2, (scrvsize-wvsize)/2, 0);
- }
-
- void ctralrt(a)
- short a; /* alert number */
- {
- Handle reshnd;
- struct Rect * rptr;
- short scrhsize, scrvsize;
- short ahsize, avsize;
-
- CouldAlert(a); /* read alert into memory and make unpurgeable */
- reshnd = GetResource('ALRT', a);
- if (reshnd == 0) return;
- rptr = (struct Rect *)*reshnd;
- scrhsize = qd.screenBits.bounds.right - qd.screenBits.bounds.left;
- scrvsize = qd.screenBits.bounds.bottom - qd.screenBits.bounds.top;
- ahsize = rptr->right - rptr->left;
- avsize = rptr->bottom - rptr->top;
- if (bigscreen)
- rptr->top = (scrvsize-avsize)/3;
- else
- rptr->top = (scrvsize-avsize)/2;
- rptr->left = (scrhsize-ahsize)/2;
- rptr->bottom = rptr->top + avsize;
- rptr->right = rptr->left + ahsize;
- }
-
- void framedflt(dlgptr)
- DialogPtr dlgptr;
- {
- short gtype;
- Handle gitem;
- Rect gbox;
- GrafPtr gp;
-
- GetDItem(dlgptr, 1, >ype, &gitem, &gbox);
- GetPort(&gp);
- SetPort(dlgptr);
- PenSize(3,3);
- InsetRect(&gbox, -4, -4);
- FrameRoundRect(&gbox, 16, 16);
- SetPort(gp);
- }
-
- short getstring(dlgptr, item, desc, s, size)
- DialogPtr dlgptr;
- short item, size;
- unsigned char * desc, * s;
- {
- short gtype;
- Handle gitem;
- Rect gbox;
- unsigned char result[256];
-
- GetDItem(dlgptr, item, >ype, &gitem, &gbox);
- GetIText(gitem, result);
- p2cstr(result);
-
- return(checkstring(result, dlgptr, item, desc, s, size));
- }
-
- short checkstring(result, dlgptr, item, desc, s, size)
- DialogPtr dlgptr;
- short item, size;
- unsigned char * result, * desc, * s;
- {
- unsigned char * start;
- short i, len;
- pascal Boolean (*filterProc) ();
- unsigned char blankflag;
- static unsigned char nullstr[1] = {0};
- unsigned char chkmsg[64];
-
- filterProc = DlgFilter;
-
- /* set start and len to remove leading and trailing blanks */
- start = result;
- while (start[0] == ' ') start++;
- len = strlen(start);
- if (len > 0) while (start[len-1] == ' ') len--;
-
- /* check for length error */
- if (len > size-1) {
- if (size == 2 ) {
- sprintf(chkmsg, "\"%s\" cannot exceed 1 character.",
- desc);
- }
- else {
- sprintf(chkmsg, "\"%s\" cannot exceed %d characters.",
- desc, size-1);
- }
- c2pstr(chkmsg);
- ParamText(chkmsg, nullstr, nullstr, nullstr);
- p2cstr(chkmsg);
- StopAlert(258, (ModalFilterProcPtr)filterProc);
- ParamText(nullstr, nullstr, nullstr, nullstr);
- if (dlgptr != 0) SelIText(dlgptr, item, 0, 32767);
- return(1);
- }
-
- /* check for embedded blanks */
- blankflag = 0;
- if (len > 0)
- for (i=0; i < len; i++)
- if (start[i] == ' ') {
- blankflag = 1;
- break;
- }
- if (blankflag) {
- sprintf(chkmsg, "\"%s\" cannot contain blanks.", desc);
- c2pstr(chkmsg);
- ParamText(chkmsg, nullstr, nullstr, nullstr);
- p2cstr(chkmsg);
- StopAlert(258, (ModalFilterProcPtr)filterProc);
- ParamText(nullstr, nullstr, nullstr, nullstr);
- if (dlgptr != 0) SelIText(dlgptr, item, 0, 32767);
- return(2);
- }
-
- /* copy result */
- memset(s, 0, size);
- memcpy(s, start, len);
- return(0);
- }
-
- short getcnum(dlgptr, item, desc, n, minval, maxval)
- DialogPtr dlgptr;
- short item, minval, maxval;
- unsigned char * desc;
- unsigned char * n;
- {
- short gtype;
- Handle gitem;
- Rect gbox;
- unsigned char result[256];
-
- GetDItem(dlgptr, item, >ype, &gitem, &gbox);
- GetIText(gitem, result);
- p2cstr(result);
-
- return(checknum(result, dlgptr, item, desc, n, minval, maxval));
- }
-
- short checknum(result, dlgptr, item, desc, n, minval, maxval)
- DialogPtr dlgptr;
- short item, minval, maxval;
- unsigned char * result, * desc;
- unsigned char * n;
- {
- unsigned char * start;
- short i, len;
- pascal Boolean (*filterProc) ();
- unsigned char digitflag;
- static unsigned char nullstr[1] = {0};
- unsigned char chkmsg[64];
-
- filterProc = DlgFilter;
-
- /* set start and len to remove leading and trailing blanks */
- start = result;
- while (start[0] == ' ') start++;
- len = strlen(start);
- if (len > 0) while (start[len-1] == ' ') len--;
-
- /* check for valid digits */
- digitflag = 0;
- if (len > 0)
- for (i=0; i < len; i++)
- if (!isdigit(start[i])) {
- digitflag = 1;
- break;
- }
- if (digitflag) {
- sprintf(chkmsg, "\"%s\" contains characters which are not digits.", desc);
- c2pstr(chkmsg);
- ParamText(chkmsg, nullstr, nullstr, nullstr);
- p2cstr(chkmsg);
- StopAlert(258, (ModalFilterProcPtr)filterProc);
- ParamText(nullstr, nullstr, nullstr, nullstr);
- if (dlgptr != 0) SelIText(dlgptr, item, 0, 32767);
- return(1);
- }
- start[len] = 0;
- if (len == 0) i = 0;
- else i = atoi(start);
- if (((i < minval) || (i > maxval)) && (i != 0)) {
- sprintf(chkmsg, "\"%s\" must be between %d and %d.", desc, minval, maxval);
- c2pstr(chkmsg);
- ParamText(chkmsg, nullstr, nullstr, nullstr);
- p2cstr(chkmsg);
- StopAlert(258, (ModalFilterProcPtr)filterProc);
- ParamText(nullstr, nullstr, nullstr, nullstr);
- if (dlgptr != 0) SelIText(dlgptr, item, 0, 32767);
- return(2);
- }
- (*n) = i; /* store result */
- return(0);
- }
-